#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../../liboctopus/src/octopus.h"

struct octopus_context octopus;

void error(void) {
  printf("%s\n", octopus.error_str);
  exit(1);
}

int main(int argc, char *argv[])
{
  char s[20];
  int i;
  unsigned int id_sender;

  // "parameter"
  int mob = 1;            // mob, der benutzt werden soll (0-14, muss frei sein)
  int mode = 3;           // empfangen
  unsigned int id = 3;    // id, auf die der mob lauscht
  int mask = 0xffffffff;  // maske

  // octopus initialisieren
  if(octopus_init (&octopus) <= 0)
    error();

  // verbindung aufbauen
  if(octopus_open(&octopus) <= 0)
    error();

  // can initialisieren
  octopus_can_init(&octopus, 1, 1);

  // mob aktivieren: empfangsmodus, lauscht auf id
  octopus_can_enable_mob(&octopus, mob, mode, id, mask);

  sleep(2); // 2 sekunden warten

  // empfangene nachricht abrufen
  octopus_can_receive_data(&octopus, mob, &id_sender, s);

  printf("id: %d\n", id_sender);
  for(i=0; i<8;i++)
    printf("%d: %02X (%c)\n", i, s[i], s[i]);

  // dummy aufruf um bug zu umgehen
  octopus_io_init(&octopus, 3);

  if (octopus_close (&octopus) < 1)
    printf ("ERROR: %s\n", octopus.error_str);

  return 0;
}
